﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using upcdew_20111_group2b.CapaDominio;
using upcdew_20111_group2b.CapaPersistencia;


namespace upcdew_20111_group2b.CapaPrueba
{
    [TestFixture]
    public class TestViviendaDAO
    {
        // 1. Instancia el objeto DAO
        private ViviendaDAO viviendaDAO = new ViviendaDAO();

        [Test]
        public void TestCrear()
        {
            // 2. Instanciando el objeto TO                     
            Residente residente = new Residente();
            residente.CodResidente = "40459127";

            Vivienda nuevaVivienda = new Vivienda();
            // 3. Agregamos los valores del objeto TO
            nuevaVivienda.CodVivienda = "V00001";
            nuevaVivienda.CodResidente = residente;
            nuevaVivienda.Tex_Ubicacion = "A-12";
            nuevaVivienda.Tex_Numero = "202";
            nuevaVivienda.Tex_Metraje = "160 m2";
            nuevaVivienda.Tex_Tipo = "CASA"; //CASA, DEPARTAMENTO

            Vivienda creadoVivienda = viviendaDAO.Crear(nuevaVivienda);

            // 4. Implementar las validaciones
        }

        [Test]
        public void TestModificar()
        {
            Residente residente = new Residente();
            residente.CodResidente = "12345678";

            // 2. Instanciamos el objeto TO
            Vivienda ViviendaModificar = new Vivienda();
            ViviendaModificar.CodResidente = residente;
            ViviendaModificar.CodVivienda = "V00001";
            ViviendaModificar.Tex_Metraje = "100";
            ViviendaModificar.Tex_Numero = "10";
            ViviendaModificar.Tex_Tipo = "20";
            ViviendaModificar.Tex_Ubicacion = "Este";

            // 3. Llamada al método del DAO a probar
            Vivienda ViviendaObtenido = viviendaDAO.Modificar(ViviendaModificar);
            // 4. Implementar las validaciones
            Assert.NotNull(ViviendaObtenido);
            //Assert.AreEqual(ViviendaModificar.Correo, tutorObtenido.Correo);

        }
        [Test]
        public void TestEliminar()
        {

            // 2. Instanciamos el objeto TO
            Vivienda ViviendaEliminar = new Vivienda();
            ViviendaEliminar.CodVivienda = "V00001";
            // 3. Llamada al método del DAO a probar
            Assert.Catch<Exception>(delegate
            {
                viviendaDAO.Eliminar(ViviendaEliminar);
            });
            Assert.DoesNotThrow(delegate
            {
                viviendaDAO.Eliminar(ViviendaEliminar);
            });

            // 4. Implementar las validaciones
            Assert.NotNull(ViviendaEliminar);
            Assert.NotNull(ViviendaEliminar.CodVivienda);


        }
        [Test]
        public void TestObtener()
        {
            // 2. Instanciamos el objeto TO
            String codigo = "V00001";
            // 3. Llamada al método del DAO a probar
            Vivienda ViviendaObtenido = viviendaDAO.Obtener(codigo);
            // 4. Implementar las validaciones
            Assert.NotNull(ViviendaObtenido);
            Assert.AreEqual(codigo, ViviendaObtenido.CodVivienda);
            Assert.NotNull(ViviendaObtenido.Tex_Metraje);
        }

        [Test]
        public void ListarViviendaPorMetraje()
        {
            string ubica = "esedfr";
            ICollection<Vivienda> Lvivienda = viviendaDAO.ListarViviendaPorMetraje(ubica);
            Assert.NotNull(Lvivienda);
            Assert.LessOrEqual(Lvivienda.Count, 0);
        }

    }
}